Rows: 16 Columns: 52
── Column specification ───────────────────────────────────────────────────────────────────
Delimiter: "\t"
chr  (1): sgRNA
dbl (50): HL_5N2_t0_R1, HL_5N2_t0_R2, HL_5N2_t0_R3, HL_5N2_t0_R4, HL_5N2_t1_R1, HL_5N2_...
lgl  (1): Gene

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

1 Sample-sample correlation

df_counts <- tidyr::pivot_longer(count_matrix,
    cols = 2:ncol(count_matrix),
    names_to = "sample", values_to = "n_reads"
)

# sort
df_counts <- arrange(df_counts, sample)
#df_counts <- left_join(df_samplesheet, df_counts)

df_correlation <- df_counts %>%
    tidyr::pivot_wider(names_from = "sample", values_from = "n_reads") %>%
    dplyr::select(-c(1)) %>%
    cor()

plot_replicate_correlation <- df_correlation %>%
    dplyr::as_tibble() %>%
    dplyr::mutate(sample1 = colnames(.)) %>%
    tidyr::pivot_longer(
        cols = !sample1,
        names_to = "sample2", values_to = "cor_coef"
    ) %>%
    ggplot(aes(x = sample1, y = sample2, fill = cor_coef)) +
    geom_tile() +
    geom_text(color = grey(0.4), aes(label = round(cor_coef, 2))) +
    theme_light() +
    labs(title = "", x = "", y = "") +
    theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) +
    scale_fill_gradientn(
        colours = c("#E7298A", grey(0.9), "#66A61E"),
        limits = c(-1, 1)
    )

plot_replicate_correlation

ggsave("../plots/correlation/pdf/correlation_samples.pdf", plot=plot_replicate_correlation, width=12, height=12)
ggsave("../plots/correlation/png/correlation_samples.png", plot=plot_replicate_correlation, width=12, height=12)

# https://bioinformatics.stackexchange.com/questions/22502/manually-set-range-of-colour-scale-in-pheatmap-in-r

annotation_days = data.frame(row.names=unique(row.names(df_correlation)), generation=as.character(c(0, 0, 0,0, 1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5)), condition=c(rep("cont",32), rep("LD", 18)), replicate=as.character(c(rep(c(1,2,3,4),8), rep(c(5,6,7), 6)))) 

# https://stackoverflow.com/questions/41628450/r-pheatmap-change-annotation-colors-and-prevent-graphics-window-from-popping-up
# choose colors for replicate that make difference between the two conditions clearly obvious --> four colours that are similar for HC, three that are similar for LD, let replicate 3 of LD _pop_
# choose gradient of colors for generations
# e.g. Tol from https://davidmathlogic.com/colorblind/#%23D81B60-%231E88E5-%23FFC107-%23004D40
okabe <- c("#f0e442ff", "#e69f00ff", "#d55e00ff", "#cc79a7ff", "#009e73ff", "#56b4e9ff", "#0072b2ff", "#aaaaaaff")
tol <- c("#882255ff","#aa4499ff","#cc6677ff","#ddcc77ff","#88cceeff","#44aa99ff","#117733ff","#332288ff")
okabe_gen <- okabe
names(okabe_gen) <- unique(annotation_days$generation)
okabe_replic <- okabe[1:7]
names(okabe_replic) <- unique(annotation_days$replicate)
annotation_color_list <- list(condition=c("cont"=okabe[7], "LD"=okabe[2]), generation=okabe_gen, replicate=okabe_replic)

okabe <- c("#fff2ecff","#f0e442ff", "#f5a700ff", "#9a4400ff", "#cc79a7ff", "#56b4e9ff", "#0072b2ff", "#003450ff")
okabe_gen <- okabe
names(okabe_gen) <- unique(annotation_days$generation)
based_on_col <- c("#009affff","#007acbff","#005b98ff","#003d66ff","#ff9dd5ff","#cc84aeff","#9a5b83ff")
names(based_on_col) <- unique(annotation_days$replicate)
annotation_color_list <- list(condition=c("cont"="#005a96ff", "LD"="#c57ba5ff"), replicate=based_on_col, generation=okabe_gen)

color.divisions <- 100
#color <- makeColorRampPalette(c("navy", "white","white", "red"), cutoff.distance / max(distmat), color.divisions)


p <- pheatmap(df_correlation, display_numbers=TRUE, treeheight_col=0, cutree_rows = 3, cutree_cols = 3, annotation_row = annotation_days, annotation_colors = annotation_color_list)
p

ggsave("../plots/correlation/png/correlation_samples_clustering.png", plot=p, width=11.5, height=8)
ggsave("../plots/correlation/pdf/correlation_samples_clustering.pdf", plot=p, width=11.5, height=8)

p <- pheatmap(df_correlation, display_numbers=FALSE, treeheight_col=0, cutree_rows = 3, cutree_cols = 3, annotation_row = annotation_days, annotation_colors = annotation_color_list, breaks = seq(-1,1, length.out=(color.divisions + 1)))#, color = color)
p

ggsave("../plots/correlation/png/correlation_samples_clustering_woNumbers.png", plot=p, width=11.5, height=8)
ggsave("../plots/correlation/pdf/correlation_samples_clustering_woNumbers.pdf", plot=p, width=11.5, height=8)

Session Info

LS0tCnRpdGxlOiAiUGxvdCBjb3JyZWxhdGlvbiBvZiBsaWdodC1kYXJrIHNhbXBsZXMgdG8gY29udGludW91cyBsaWdodCBzYW1wbGVzIG9mIGN1bHRpdmF0aW9ucyBwZXJmb3JtZWQgaW4gc2FtZSBNdWx0aS1DdWx0aXZhdG9yIgphdXRob3I6ICdTWVNURU06IGByIHZlcnNpb25bMTNdYCcKZGF0ZTogJ0RBVEU6IGByIFN5cy50aW1lKClgJwpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogeWVzCiAgICBkZl9wcmludDogcGFnZWQKICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogY29zbW8KICAgIHRvYzogeWVzCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcwpwYXJhbXM6CiAgY3B1czogMgogIGlucHV0X2RpcjogLi8KICBtZXRhOiAnJwotLS0KCmBgYHtyIGxvYWQtcmVxdWlyZWQtcGFja2FnZXMsIGluY2x1ZGUgPSBGQUxTRX0KbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShERVNlcTIpCmxpYnJhcnkoRGVzY1Rvb2xzKQpsaWJyYXJ5KGNvbG9yYmxpbmRyKSAjaHR0cHM6Ly9naXRodWIuY29tL2NsYXVzd2lsa2UvY29sb3JibGluZHIKbGlicmFyeSh0aWR5cikKbGlicmFyeShnZ3JlcGVsKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGdnbmV3c2NhbGUpCmxpYnJhcnkoSGVhdHBsdXMpICMgYmlvY29uZHVjdG9yCmxpYnJhcnkoQ29tcGxleEhlYXRtYXApICMgYmlvY29uZHVjdG9yCmxpYnJhcnkoZWRnZVIpCmxpYnJhcnkoTWZ1enopCmxpYnJhcnkoZ2dWZW5uRGlhZ3JhbSkKbGlicmFyeShwaGVhdG1hcCkKYGBgCgpgYGB7ciBsb2FkLXJlcXVpcmVkLWRhdGFzZXRzLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFfQpjb3VudF9tYXRyaXggPC0gcmVhZF90c3YoIi4uL291dHB1dF9jb21wYXJlX0hMSENfTERIQy9wcmVwYXJlL2FsbF9jb3VudHMudHN2IikKY291bnRfbWF0cml4JEdlbmUgPC0gTlVMTAoKZGZfc2FtcGxlc2hlZXQgPC0gcmVhZHI6OnJlYWRfY3N2KCIuLi9pbnB1dC9zYW1wbGVzaGVldF9SdWJpc2NvX29ubHlfTUNfSExIQ19MREhDLmNzdiIsIGNvbF90eXBlcyA9IGNvbHMoKSkgJT4lCiAgICBzZWxlY3QoYWxsX29mKGMoInNhbXBsZSIsICJjb25kaXRpb24iLCAicmVwbGljYXRlIiwgInRpbWUiLCAiZ3JvdXAiLCAicmVmZXJlbmNlX2dyb3VwIikpKSAlPiUKICAgIGRwbHlyOjptdXRhdGUoZ3JvdXAgPSBmYWN0b3IoYGdyb3VwYCkpCmRmX3NhbXBsZXNoZWV0JG5hbWUgPC0gcGFzdGUoImdlbl8iLCBkZl9zYW1wbGVzaGVldCR0aW1lLCAiX3JfIiwgZGZfc2FtcGxlc2hlZXQkcmVwbGljYXRlLCBzZXA9IiIpCmBgYAoKIyBTYW1wbGUtc2FtcGxlIGNvcnJlbGF0aW9uCgpgYGB7ciwgZmlnLndpZHRoID0gMTIsIGZpZy5oZWlnaHQgPSAxMCwgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlPUZBTFNFfQpkZl9jb3VudHMgPC0gdGlkeXI6OnBpdm90X2xvbmdlcihjb3VudF9tYXRyaXgsCiAgICBjb2xzID0gMjpuY29sKGNvdW50X21hdHJpeCksCiAgICBuYW1lc190byA9ICJzYW1wbGUiLCB2YWx1ZXNfdG8gPSAibl9yZWFkcyIKKQoKIyBzb3J0CmRmX2NvdW50cyA8LSBhcnJhbmdlKGRmX2NvdW50cywgc2FtcGxlKQojZGZfY291bnRzIDwtIGxlZnRfam9pbihkZl9zYW1wbGVzaGVldCwgZGZfY291bnRzKQoKZGZfY29ycmVsYXRpb24gPC0gZGZfY291bnRzICU+JQogICAgdGlkeXI6OnBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSAic2FtcGxlIiwgdmFsdWVzX2Zyb20gPSAibl9yZWFkcyIpICU+JQogICAgZHBseXI6OnNlbGVjdCgtYygxKSkgJT4lCiAgICBjb3IoKQoKcGxvdF9yZXBsaWNhdGVfY29ycmVsYXRpb24gPC0gZGZfY29ycmVsYXRpb24gJT4lCiAgICBkcGx5cjo6YXNfdGliYmxlKCkgJT4lCiAgICBkcGx5cjo6bXV0YXRlKHNhbXBsZTEgPSBjb2xuYW1lcyguKSkgJT4lCiAgICB0aWR5cjo6cGl2b3RfbG9uZ2VyKAogICAgICAgIGNvbHMgPSAhc2FtcGxlMSwKICAgICAgICBuYW1lc190byA9ICJzYW1wbGUyIiwgdmFsdWVzX3RvID0gImNvcl9jb2VmIgogICAgKSAlPiUKICAgIGdncGxvdChhZXMoeCA9IHNhbXBsZTEsIHkgPSBzYW1wbGUyLCBmaWxsID0gY29yX2NvZWYpKSArCiAgICBnZW9tX3RpbGUoKSArCiAgICBnZW9tX3RleHQoY29sb3IgPSBncmV5KDAuNCksIGFlcyhsYWJlbCA9IHJvdW5kKGNvcl9jb2VmLCAyKSkpICsKICAgIHRoZW1lX2xpZ2h0KCkgKwogICAgbGFicyh0aXRsZSA9ICIiLCB4ID0gIiIsIHkgPSAiIikgKwogICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0ID0gMSkpICsKICAgIHNjYWxlX2ZpbGxfZ3JhZGllbnRuKAogICAgICAgIGNvbG91cnMgPSBjKCIjRTcyOThBIiwgZ3JleSgwLjkpLCAiIzY2QTYxRSIpLAogICAgICAgIGxpbWl0cyA9IGMoLTEsIDEpCiAgICApCgpwbG90X3JlcGxpY2F0ZV9jb3JyZWxhdGlvbgpnZ3NhdmUoIi4uL3Bsb3RzL2NvcnJlbGF0aW9uL3BkZi9jb3JyZWxhdGlvbl9zYW1wbGVzLnBkZiIsIHBsb3Q9cGxvdF9yZXBsaWNhdGVfY29ycmVsYXRpb24sIHdpZHRoPTEyLCBoZWlnaHQ9MTIpCmdnc2F2ZSgiLi4vcGxvdHMvY29ycmVsYXRpb24vcG5nL2NvcnJlbGF0aW9uX3NhbXBsZXMucG5nIiwgcGxvdD1wbG90X3JlcGxpY2F0ZV9jb3JyZWxhdGlvbiwgd2lkdGg9MTIsIGhlaWdodD0xMikKCiMgaHR0cHM6Ly9iaW9pbmZvcm1hdGljcy5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMjI1MDIvbWFudWFsbHktc2V0LXJhbmdlLW9mLWNvbG91ci1zY2FsZS1pbi1waGVhdG1hcC1pbi1yCmNvbG9yLmRpdmlzaW9ucyA8LSAxMDAKCmFubm90YXRpb25fZGF5cyA9IGRhdGEuZnJhbWUocm93Lm5hbWVzPXVuaXF1ZShyb3cubmFtZXMoZGZfY29ycmVsYXRpb24pKSwgZ2VuZXJhdGlvbj1hcy5jaGFyYWN0ZXIoYygwLCAwLCAwLDAsIDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSw2LDYsNiw2LDcsNyw3LDcsMCwwLDAsMSwxLDEsMiwyLDIsMywzLDMsNCw0LDQsNSw1LDUpKSwgY29uZGl0aW9uPWMocmVwKCJjb250IiwzMiksIHJlcCgiTEQiLCAxOCkpLCByZXBsaWNhdGU9YXMuY2hhcmFjdGVyKGMocmVwKGMoMSwyLDMsNCksOCksIHJlcChjKDUsNiw3KSwgNikpKSkgCgojIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQxNjI4NDUwL3ItcGhlYXRtYXAtY2hhbmdlLWFubm90YXRpb24tY29sb3JzLWFuZC1wcmV2ZW50LWdyYXBoaWNzLXdpbmRvdy1mcm9tLXBvcHBpbmctdXAKIyBjaG9vc2UgY29sb3JzIGZvciByZXBsaWNhdGUgdGhhdCBtYWtlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIGNvbmRpdGlvbnMgY2xlYXJseSBvYnZpb3VzIC0tPiBmb3VyIGNvbG91cnMgdGhhdCBhcmUgc2ltaWxhciBmb3IgSEMsIHRocmVlIHRoYXQgYXJlIHNpbWlsYXIgZm9yIExELCBsZXQgcmVwbGljYXRlIDMgb2YgTEQgX3BvcF8KIyBjaG9vc2UgZ3JhZGllbnQgb2YgY29sb3JzIGZvciBnZW5lcmF0aW9ucwojIGUuZy4gVG9sIGZyb20gaHR0cHM6Ly9kYXZpZG1hdGhsb2dpYy5jb20vY29sb3JibGluZC8jJTIzRDgxQjYwLSUyMzFFODhFNS0lMjNGRkMxMDctJTIzMDA0RDQwCm9rYWJlIDwtIGMoIiNmMGU0NDJmZiIsICIjZTY5ZjAwZmYiLCAiI2Q1NWUwMGZmIiwgIiNjYzc5YTdmZiIsICIjMDA5ZTczZmYiLCAiIzU2YjRlOWZmIiwgIiMwMDcyYjJmZiIsICIjYWFhYWFhZmYiKQp0b2wgPC0gYygiIzg4MjI1NWZmIiwiI2FhNDQ5OWZmIiwiI2NjNjY3N2ZmIiwiI2RkY2M3N2ZmIiwiIzg4Y2NlZWZmIiwiIzQ0YWE5OWZmIiwiIzExNzczM2ZmIiwiIzMzMjI4OGZmIikKb2thYmVfZ2VuIDwtIG9rYWJlCm5hbWVzKG9rYWJlX2dlbikgPC0gdW5pcXVlKGFubm90YXRpb25fZGF5cyRnZW5lcmF0aW9uKQpva2FiZV9yZXBsaWMgPC0gb2thYmVbMTo3XQpuYW1lcyhva2FiZV9yZXBsaWMpIDwtIHVuaXF1ZShhbm5vdGF0aW9uX2RheXMkcmVwbGljYXRlKQphbm5vdGF0aW9uX2NvbG9yX2xpc3QgPC0gbGlzdChjb25kaXRpb249YygiY29udCI9b2thYmVbN10sICJMRCI9b2thYmVbMl0pLCBnZW5lcmF0aW9uPW9rYWJlX2dlbiwgcmVwbGljYXRlPW9rYWJlX3JlcGxpYykKCm9rYWJlIDwtIGMoIiNmZmYyZWNmZiIsIiNmMGU0NDJmZiIsICIjZjVhNzAwZmYiLCAiIzlhNDQwMGZmIiwgIiNjYzc5YTdmZiIsICIjNTZiNGU5ZmYiLCAiIzAwNzJiMmZmIiwgIiMwMDM0NTBmZiIpCm9rYWJlX2dlbiA8LSBva2FiZQpuYW1lcyhva2FiZV9nZW4pIDwtIHVuaXF1ZShhbm5vdGF0aW9uX2RheXMkZ2VuZXJhdGlvbikKYmFzZWRfb25fY29sIDwtIGMoIiMwMDlhZmZmZiIsIiMwMDdhY2JmZiIsIiMwMDViOThmZiIsIiMwMDNkNjZmZiIsIiNmZjlkZDVmZiIsIiNjYzg0YWVmZiIsIiM5YTViODNmZiIpCm5hbWVzKGJhc2VkX29uX2NvbCkgPC0gdW5pcXVlKGFubm90YXRpb25fZGF5cyRyZXBsaWNhdGUpCmFubm90YXRpb25fY29sb3JfbGlzdCA8LSBsaXN0KGNvbmRpdGlvbj1jKCJjb250Ij0iIzAwNWE5NmZmIiwgIkxEIj0iI2M1N2JhNWZmIiksIHJlcGxpY2F0ZT1iYXNlZF9vbl9jb2wsIGdlbmVyYXRpb249b2thYmVfZ2VuKQoKcCA8LSBwaGVhdG1hcChkZl9jb3JyZWxhdGlvbiwgZGlzcGxheV9udW1iZXJzPVRSVUUsIHRyZWVoZWlnaHRfY29sPTAsIGN1dHJlZV9yb3dzID0gMywgY3V0cmVlX2NvbHMgPSAzLCBhbm5vdGF0aW9uX3JvdyA9IGFubm90YXRpb25fZGF5cywgYW5ub3RhdGlvbl9jb2xvcnMgPSBhbm5vdGF0aW9uX2NvbG9yX2xpc3QsIGJyZWFrcyA9IHNlcSgtMSwxLCBsZW5ndGgub3V0PShjb2xvci5kaXZpc2lvbnMgKyAxKSkpCnAKZ2dzYXZlKCIuLi9wbG90cy9jb3JyZWxhdGlvbi9wbmcvY29ycmVsYXRpb25fc2FtcGxlc19jbHVzdGVyaW5nLnBuZyIsIHBsb3Q9cCwgd2lkdGg9MTEuNSwgaGVpZ2h0PTgpCmdnc2F2ZSgiLi4vcGxvdHMvY29ycmVsYXRpb24vcGRmL2NvcnJlbGF0aW9uX3NhbXBsZXNfY2x1c3RlcmluZy5wZGYiLCBwbG90PXAsIHdpZHRoPTExLjUsIGhlaWdodD04KQoKcCA8LSBwaGVhdG1hcChkZl9jb3JyZWxhdGlvbiwgZGlzcGxheV9udW1iZXJzPUZBTFNFLCB0cmVlaGVpZ2h0X2NvbD0wLCBjdXRyZWVfcm93cyA9IDMsIGN1dHJlZV9jb2xzID0gMywgYW5ub3RhdGlvbl9yb3cgPSBhbm5vdGF0aW9uX2RheXMsIGFubm90YXRpb25fY29sb3JzID0gYW5ub3RhdGlvbl9jb2xvcl9saXN0LCBicmVha3MgPSBzZXEoLTEsMSwgbGVuZ3RoLm91dD0oY29sb3IuZGl2aXNpb25zICsgMSkpKQpwCmdnc2F2ZSgiLi4vcGxvdHMvY29ycmVsYXRpb24vcG5nL2NvcnJlbGF0aW9uX3NhbXBsZXNfY2x1c3RlcmluZ193b051bWJlcnMucG5nIiwgcGxvdD1wLCB3aWR0aD0xMS41LCBoZWlnaHQ9OCkKZ2dzYXZlKCIuLi9wbG90cy9jb3JyZWxhdGlvbi9wZGYvY29ycmVsYXRpb25fc2FtcGxlc19jbHVzdGVyaW5nX3dvTnVtYmVycy5wZGYiLCBwbG90PXAsIHdpZHRoPTExLjUsIGhlaWdodD04KQpgYGAKCiMgU2Vzc2lvbiBJbmZvIHsudW5udW1iZXJlZH0KCmBgYHtyIHNlc3Npb25JbmZvLCBlY2hvPUZBTFNFfQpzZXNzaW9uSW5mbygpCmBgYAoK